package com.tom.template.api.enums;


import org.apache.commons.lang3.StringUtils;

public enum ResultCode {

    SUCCESS("成功", 1000),
    FAIL("失败", 5100),
    PARAM_ERROR("参数错误", 5200),
    DATA_ERROR("数据异常", 5201),
    SENSITIVE_WORD("含有敏感词", 5202),
    NO_DATA_AVAILABLE("无可用数据", 5203),
    APP_CODE_INVALID("无APPCODE信息", 5204),
    RESOURCE_AUTH_FAIL("无资源权限", 5205),
    THIRD_AUTH_FAIL("授权失败", 5401),
    THIRD_EXPIRE("timestamp过期", 5402),
    THIRD_API_UNAUTH("接口未授权", 5403),
    THIRD_SIGN_FAIL("数据验签失败", 5404),
    THIRD_ACCT_UNBIND("三方账户未绑定", 5408),
    THIRD_WECHAT_UNSUBSCRIBE("未关注微信公账号", 5409),
    INTEGRATION_ACCESS_EXPIRE("timestamp过期", 5405),
    INTEGRATION_ACCESS_UNAUTH("接口未授权", 5406),
    INTEGRATION_ACCESS_SIGN_FAIL("数据验签失败", 5407),
    DATA_ACCESS_INVALID("无数据访问权限", 5300),
    ERROR("系统错误", 5000),
    ILLEGAL_ACCESS("非法访问", 5101),
    REPEAT_OPERATION("重复操作", 5102),
    INVENTORY_NOT_EXIST("库存信息不存在", 5301),
    INVENTORY_CHANGE("库存信息变更", 5302),
    MQ_SEND_FAILED("发送MQ消息失败", 5303),
    BREEDS_NOT_EXIST("猪只品种不存在", 5304),
    BREEDS_NOT_GENDER("该猪只品种须区分性别", 5305),
    SALE_TYPE_NOT_EXIST("猪只销售类型映射关系不存在", 5306),
    SHOP_NAME_IS_EXIST("店铺名已经被使用", 6000),
    SHOP_USER_HAS_SHOP("该用户已经创建店铺", 6001),
    SHOP_NOT_EXIST("店铺不存在", 6002),
    SHOP_CONTACT_MOBILE_IS_EXIST("店铺联系电话已被使用", 6003),
    SHOP_DATA_ABNORMAL("店铺数据异常", 6004),
    SHOP_PIGFARM_NAME_IS_EXIST("猪场名已经被使用", 6100),
    SHOP_PIGFARM_UN_DEL_IS_FY("猪场是放养同步数据，无法删除", 6101),
    SHOP_PIGFARM_NOT_EXIST("猪场不存在", 6102),
    SHOP_HAS_NOT_PRODUCT("店铺下无产品存在", 6103),
    SHOP_STATUS_DISABLED("店铺被禁用", 6104),
    SUBACCOUNT_ORDER_FORBIDEN("禁止购买自己店铺的商品", 6105),
    SUBACCOUNT_IDENTITY_EXIST("已经是子账号", 6106),
    SUBACCOUNT_APPLY_EXIST("已存在申请记录", 6107),
    ORG_SHOP_NOT_EXIST("组织机构无对应店铺映射", 6199),
    SHOP_USER_AUDIT_IS_EXIST("该店铺下还有该会员未审核的申请", 6200),
    SHOP_MEMBER_IS_NOT_EXIST("该店铺会员关系没有存在", 6201),
    SHOP_MEMBER_HAS_TRADING_ORDER("该店铺会员存在正在交易的订单", 6202),
    SHOP_MEMBER_ACTIVE_FAIL("会员激活失败", 6203),
    SHOP_MEMBER_IS_EXIST("店铺会员关系已经存在", 6205),
    SHOP_USER_IS_NO_MASTER("当前用户不是该店铺的店主", 6204),
    SHOP_UPDATE_FAIL("店铺更新失败",6209),
    DEALER_IS_EXIST("经销商已存在", 6205),
    DEALER_IS_NOT_EXIST("经销商不存在", 6210),
    DEALER_ADD_FAIL("保存经销商失败", 6208),
    DEALER_DELETE_FAIL("删除经销商失败", 6208),
    DEALER_UPDATE_FAIL("更新经销商失败", 6208),
    DEALER_RELATION_ADD_FAIL("保存经销商与养户关系失败", 6301),
    DEALER_RELATION_DELETE_FAIL("删除经销商与养户关系失败",6302),
    DEALER_RELATION_UPDATE_FAIL("更新经销商与养户关系失败", 6303),
    USER_COMPANY_RELATION_ADD_FAIL("保存公司与用户关系失败", 6304),
    USER_COMPANY_RELATION_DELETE_FAIL("删除公司与用户关系失败", 6305),
    USER_COMPANY_RELATION_UPDATE_FAIL("修改公司与用户关系失败", 6306),
    USER_COMPANY_ADD_FAIL("保存公司信息失败", 6307),
    BREED_USER_IS_NOT_EXIST("该养户未绑定经销商", 6206),
    BREED_USER_HAVE_DEALER("该养户已绑定了经销商", 6208),
    BREED_USER_HAVE_MORE_DEALER("该养户绑定了多个经销商", 6207),
    NOT_SHOP_MASTER_OR_DEALER("店主且身份是经销商才能查看关联养户的数据",6208),
    SHOP_TODAY_USER_IS_INVITE("该用户当天已发送邀请关注", 6300),
    SHOP_EXIST_UNFINISH_GOODS("店铺存在未完成的商品", 6401),
    SHOP_EXIST_UNTREATED_ORDER("店铺存在未完成订单", 6501),
    ORDER_SATUS_NO_DELIVERY("该批订单不是可交割状态", 8000),
    ORDER_OUT_OF_REPERTORY("该次交割数超出库存可用数", 8001),
    ORDER_UN_MATCH_DELIVERY("该批订单跟交割信息不匹配", 8002),
    ORDER_GOODS_UN_EXIST("该交割对应的产品不存在", 8003),
    ORDER_CAN_NOT_EVALUATE("该交割单不能被评价", 8004),
    ORDER_HAS_EVALUATE("该交割单已评价了", 8005),
    BID_PRICE_IS_NOT_EXIST("竞价单不存在", 8007),
    APPLY_IS_DELIVERY("申请交割订单已交割",8006),
    ORDER_CHANGE("订单数据变更", 8101),
    USER_EXIST("用户已注册", 7001),
    USER_NAME_TOO_LONG("10字内", 7002),
    USER_REGISTER_FAIL("注册失败", 7003),
    USER_LOGIN_REQUIRED("用户未登录", 7004),
    USER_BIND_FAIL("三方账户绑定失败", 7005),
    USER_INFO_UNAVAILABLE("用户信息不可用", 7008),
    USER_NOT_EXIST("用户不存在", 7006),
    USER_EXIST_SUBACCT("店铺子账号", 7007),
    CURRENT_SHOP_SUBACCT("当前店铺子账号", 7012),
    OTHER_SHOP_SUBACCT("其它店铺子账号", 7013),
    POTENTIAL_USER_EXIST("用户已是潜在用户", 7014),
    USER_LOGIN_PASSWORD_ERROR("登录密码错误", 7009),
    USER_LOGIN_FAIL("登录失败", 7010),
    USER_THIRDACCT_BIND("三方账户已绑定", 7101),
    USER_NOT_HAS_SHOP("当前用户没有绑定对应店铺", 7102),
    USER_MOBILE_EXIST("该手机号已被绑定使用", 7103),
    USER_HONGBAO_APPLIED("你已报名聚宝活动，请不要重复报名", 7104),
    USER_IDENTITY_REQUIRED("用户标签未设置", 7105),
    USER_MOBILE_IS_NOT_EXIST("该手机号不存在", 7106),
    USER_HONGBAO_AUTHCODE_ERROR("红包验证码错误", 7107),
    USER_UPDATE_FAIL("用户信息修改失败",7108),
    USER_HONGBAO_VERIFICATION_FAIL("用户红包核销校验失败",7109),
    USER_HONGBAO_BACKED_FAIL_NO_USED_RECORD("用户红包回退失败，无红包使用记录",7110),
    USER_HONGBAO_BACKED_FAIL_AMOUNT_ERROR("用户红包回退失败，回退金额错误",7111),
    SHELVES_USER_NOT_MATCH("用户不存在撮合记录",7112),
    FILE_PIC_SAVE_FAIL("图片上传失败", 8001),
    MSG_SMS_ERROR("短信操作异常", 4001),
    MSG_SMS_CODE_ERROR("短信验证码错误", 4002),
    MSG_SEND_CODE_ERROR("发送消息错误", 4003),
    MSG_SMS_CODE_EXPIRED_ERROR("短信验证码已过期", 4004),
    NEED_CODE("需要验证码", 4005),
    MSG_TEMPLATE_NOT_EXIST("消息模板不存在", 4101),
    MSG_MQ_SEND_FAIL("发送MQ失败", 4201),
    GOODS_REPOSITORY_IS_NOT_EXIST("该商品库存不存在", 9000),
    GOODS_CHANGE("上架单信息变更", 9001),
    GOODS_IS_NOT_EXIST("商品发布单不存在", 9002),
    GOODS_LOW_STOCK("库存不足", 9003),
    GOODS_CANNOT_MODIFY("商品不能修改", 9012),
    GOODS_TRADE_OVER("发布单交易结束", 9013),
    CORRELATECOUNT_NOT_SUFFICIENT("关联发布数量大于待发布数量", 9018),
    SHELVES_MATCH_FEEDBACK_YET("用户已经反馈过",9015),
    THIRD_USER_IS_NOT_EXIST("关联系统对应的用户关系不存在", 9004),
    COLLECTION_PRICE_IS_EXIST("同个公司同个区域同种类同均重价格信息已存在", 9005),
    BUYOFFER_STATUS_CHANGED("求购单状态变更", 9006),
    BUYOFFER_HAS_OFFER_PRICE("有人投标后只能修改求购结束时间、补充说明、标签", 9007),
    BUYOFFER_CANNOT_CHANGE_STATUS("状态不可修改", 9008),
    BUYOFFER_IS_NOT_EXIST("求购单不存在", 9009),
    BUYOFFER_SHOP_OFFERED("店铺已执行过报价操作", 9010),
    BUYOFFER_PUBLISH_OVER("求购单发布结束", 9014),
    BUYOFFER_USER_NOT_MATCH("用户不存在撮合记录",9016),
    BUYOFFER_MATCH_FEEDBACK_YET("用户已经反馈过",9017),
    USER_AUTH_STATUS_NONE("用户未认证", 9007),
    USER_APPLY_NONE("用户未报名", 9011),
    SHELVES_NONE_HONGBAO("非红包上架单", 9008),
    SUBSCRIBE_NO("未关注公众号", 9009),
    NOT_EXISTS_HONGBAO("没有对应红包", 9010),
    NOT_EXISTS_USER("没有用户", 9011)
    ;


    private String desc;
    private int statusCode;

    public int getStatusCode() {
        return statusCode;
    }

    ResultCode(String desc, int statusCode) {
        this.desc = desc;
        this.statusCode = statusCode;
    }

    public static ResultCode getResultCodeByName(String name) {
        if (StringUtils.isBlank(name)) {
            return null;
        }
        ResultCode[] enumsArray = ResultCode.values();
        for (ResultCode resultCode : enumsArray) {
            if (resultCode.name().equals(name)) {
                return resultCode;
            }
        }
        return null;
    }

    public String getDesc() {
        return desc;
    }
}
